home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 8174 / 8174.xpi / chrome / antbar.jar / content / userinterface.js < prev    next >
Text File  |  2009-12-30  |  6KB  |  216 lines

  1. //
  2. //  antflviui.js
  3. //  firefox
  4. //
  5. //  Created by Zak on 2008-06-16.
  6. //  Copyright 2008-2009 Ant.com. All rights reserved.
  7. //
  8.  
  9. var AntFlvUi =
  10. {
  11.     listShown: false,
  12.     doc: null,
  13.     listBox: null,
  14.     listMenu: null,
  15.     downloadButton: null,
  16.  
  17.     /**
  18.      * Initialize the class with necessary pointers
  19.      * @param doc           The browser interface
  20.      */
  21.     init: function (doc)
  22.     {
  23.         var self = AntFlvUi;
  24.  
  25.         self.doc = doc;
  26.  
  27.         self.downloadButton = new Array();
  28.         self.downloadList   = new Array();
  29.  
  30.         self.downloadButton.push(AntLib.ob('antToolBarDownloadButton'));
  31.         self.downloadButton.push(AntLib.ob('ant-video-statusbar-dl-button'));
  32.  
  33.         self.downloadList.push(AntLib.ob('ant-video-toolbar-dllist', doc));
  34.         self.downloadList.push(AntLib.ob('ant-video-statusbar-dllist', doc));
  35.  
  36.         AntWatchUrl.addWatcher(function (URI) {
  37.                 self.onChangedUrl(URI);
  38.             });
  39.     },
  40.  
  41.     /*
  42.      * onChangedUrl: function called when the location change
  43.      * in the browser
  44.      * @param aURI : the new url location
  45.      */
  46.     onChangedUrl: function (aURI)
  47.     {
  48.         var self = AntFlvUi;
  49.         self.updateDownloadButton();
  50.     },
  51.  
  52.     /**
  53.      * True if the list is shown, false if not
  54.      */
  55.     isShown: function ()
  56.     {
  57.         var self = AntFlvUi;
  58.         return self.listShown;
  59.     },
  60.  
  61.     /**
  62.      * Remove all listItems from the ListBox
  63.      */
  64.     removeAll: function ()
  65.     {
  66.         var self = AntFlvUi;
  67.         while (self.listBox.childNodes.length > 2)
  68.             self.listBox.removeChild(self.listBox.childNodes[2]);
  69.     },
  70.  
  71.     /**
  72.      * Find a node using his URL
  73.      * @param url           The URL to match
  74.      * @return item         a XulNode corresponding to a XUL:ListItem
  75.      */
  76.     getItemByUrl: function (url)
  77.     {
  78.         var self = AntFlvUi;
  79.         for (var i = 0; i < self.listBox.childNodes.length; i++)
  80.         {
  81.             var item = self.listBox.childNodes[i];
  82.  
  83.             if (url == item.childNodes[1].getAttribute("label"))
  84.                 return item;
  85.         }
  86.         return null;
  87.     },
  88.  
  89.  
  90.     /**
  91.      * Disable or enable the Download button according to the content of the page
  92.      * (if we find our tainted flvLink item in the page or not)
  93.      */
  94.     updateDownloadButton: function ()
  95.     {
  96.         var self = AntFlvUi;
  97.         var gBrowser = AntLib.getMainWindow().getBrowser();
  98.         var doc = gBrowser.selectedBrowser.contentDocument;
  99.         var mode = AntPrefs.getDisplayMode();
  100.  
  101.         if (doc.__antflv__ && doc.__antflv__.length != 0)
  102.         {
  103.             for (var i in self.downloadButton)
  104.                 self.downloadButton[i].disabled = false;
  105.  
  106.             if (doc.__antflv__.length == 1)
  107.             {
  108.                 for (var i in self.downloadButton)
  109.                 {
  110.                     self.downloadButton[i].setAttribute('type', '');
  111.                     self.downloadButton[i].setAttribute('oncommand', 'AntBar.onDownloadButtonClick();');
  112.                 }
  113.             }
  114.             else
  115.             {
  116.                 for (var i in self.downloadButton)
  117.                 {
  118.                     self.downloadButton[i].setAttribute('type', 'menu');
  119.                     self.downloadButton[i].setAttribute('oncommand', '');
  120.                 }
  121.  
  122.                 self.updateMenuDownload(doc);
  123.             }
  124.         }
  125.         else
  126.         {
  127.             for (var i in self.downloadButton)
  128.             {
  129.                 self.downloadButton[i].setAttribute('type', '');
  130.                 self.downloadButton[i].disabled = true;
  131.             }
  132.  
  133.             self.cleanMenuDownload();
  134.         }
  135.     },
  136.  
  137.  
  138.     /*
  139.      * Update the list of videos found
  140.      */
  141.  
  142.     cleanMenuDownload: function ()
  143.     {
  144.         var self = AntFlvUi;
  145.         for (var i in self.downloadList)
  146.         {
  147.             var menuPopup = self.downloadList[i];
  148.  
  149.             while (menuPopup.lastChild) {
  150.                 menuPopup.removeChild(menuPopup.lastChild);
  151.             }
  152.         }
  153.     },
  154.  
  155.     updateMenuDownload: function (doc)
  156.     {
  157.         var self = AntFlvUi;
  158.         self.cleanMenuDownload();
  159.  
  160.         if (doc == null)
  161.         {
  162.             var gBrowser = AntLib.getMainWindow().getBrowser();
  163.             doc = gBrowser.selectedBrowser.contentDocument;
  164.         }
  165.  
  166.         var listflv = doc.__antflv__;
  167.  
  168.         for (var i in self.downloadList)
  169.         {
  170.             var menuPopup = self.downloadList[i];
  171.  
  172.             for (var i in listflv)
  173.             {
  174.                 var flvlink = listflv[i];
  175.                 var label = flvlink.name.replace(/_/g,' ');
  176.  
  177.                 var menuItem       = self.doc.createElement('menuitem');
  178.                 var menuCellIcon   = self.doc.createElement('listcell');
  179.                 var menuCellSize   = self.doc.createElement('listcell');
  180.                 var menuCellOrigin = self.doc.createElement('listcell');
  181.                 var menuCellUrl    = self.doc.createElement('listcell');
  182.                 var menuCellName   = self.doc.createElement('listcell');
  183.  
  184.                 var id = i;
  185.  
  186.                 menuCellIcon.setAttribute('class', 'listcell-iconic ant-download-class');
  187.  
  188.                 menuCellSize.setAttribute('id', 'ant-video-tb-size-'+id);
  189.                 menuCellSize.setAttribute('label', flvlink.sizeh);
  190.  
  191.                 menuCellOrigin.setAttribute('id', 'ant-video-tb-origin-'+id);
  192.                 menuCellOrigin.setAttribute('label', flvlink.origin);
  193.  
  194.                 menuCellUrl.setAttribute('id', 'ant-video-tb-url-'+id);
  195.                 menuCellUrl.setAttribute('label', flvlink.url);
  196.                 menuCellUrl.setAttribute('hidden', true);
  197.  
  198.                 menuCellName.setAttribute('id', 'ant-video-tb-name-'+id);
  199.                 menuCellName.setAttribute('label', label);
  200.  
  201.                 menuItem.appendChild(menuCellIcon);
  202.                 menuItem.appendChild(menuCellSize);
  203.                 menuItem.appendChild(menuCellOrigin);
  204.                 menuItem.appendChild(menuCellUrl);
  205.                 menuItem.appendChild(menuCellName);
  206.  
  207.                 menuItem.setAttribute('id', 'ant-video-tb-'+id);
  208.                 menuItem.setAttribute('label', label);
  209.                 menuItem.setAttribute('oncommand', 'AntBar.onDownloadListClick('+id+');');
  210.  
  211.                 menuPopup.appendChild(menuItem);
  212.             }
  213.         }
  214.     }
  215. };
  216.